Python 汇总多个Excel表数据

本文使用xlrd模块读取Excel,使用openpyxl模块写入Excel,可将同表头结构的数据汇总至同一Excel文件中。
该小工具应该是网上同类小工具中效率较高的,只需要单次循环即可解决,注释也写得也相对详细,方便阅读理解。

代码如下:

# 第一版:初个版本,日后继续完善表头等内容判断
# coding:utf-8

def SummaryTable():
    import openpyxl
    import xlrd
    import os.path
    import time

    # 开始时间
    time_start = time.time()

    # 创建文件Summary_table.xlsx并保存
    workbook = openpyxl.Workbook('Summary_table.xlsx')
    workbook.save('Summary_table.xlsx')
    # 读取文件Summary_table.xlsx
    workbook = openpyxl.load_workbook('Summary_table.xlsx')
    # 设置写入第0张sheet
    worksheet = workbook.worksheets[0]

    # Excel表路径
    rootdir = "./ExcelFile"
    files = os.listdir(rootdir)
    # 获取文件个数
    num = len(files)

    print('读取数据中...请稍等...')
    for file in files:
        # 迭代文件夹,获取每个文件名称,获取相对路径
        path = './ExcelFile/' + file
        # 通过相对路径读取表格
        sheets = xlrd.open_workbook(path)
        # 读取指定Sheet名称
        # 读取指定Sheet序号
        # 两者二选一
        # sheet = sheets.sheet_by_name('SheetName')
        sheet = sheets.sheet_by_index(3)
        # 获取最大行数
        rows = sheet.nrows
        # 获取最大列数
        cols = sheet.ncols
        # 除去表头,开始汇总的行数
        startrow = 4
        startrow -= 1
        for row in range(startrow, rows):
        	#通过迭代获取每一行内容,并在后面添加该数据所属文件名,方便筛选,数据核查等。
            list = sheet.row_values(row) + [file]
            #将数据添加到前面新建的表格中
            worksheet.append(list)

    print('文件保存中...')
    workbook.save('Summary_table.xlsx')
    print('文件保存完成...保存路径为该程序同目录下')
    time_end = time.time()
    print('文件汇总完成...一共汇总了' + str(num) + '个文件' + '花了' + str(format(time_end - time_start, '0.2f')) + '秒')


SummaryTable()
Python可以轻松汇总多个Excel文件里某人的工资,具体步骤如下: 1.导入需要的Python库,如pandas、os等; 2.使用os库获取所有需要处理的Excel文件路径; 3.使用pandas库将每个Excel文件读取为DataFrame; 4.使用pandas的merge函数和concatenate函数将多个DataFrame合并,并剔除不需要的列,得到一个包含该人员所有工资信息的DataFrame; 5.对该DataFrame进行处理,可以使用pandas的groupby函数按照月份或类别等进行聚合,计算该人员的总工资等信息; 6.使用pandas的to_excel函数将结果输出至Excel文件。 举例来说,如果要汇总张三在2020年1月至3月三个Excel文件里的工资,可按以下步骤操作: ``` import pandas as pd import os # 获取所有需要处理的Excel文件路径 folder_path = 'excel_files' file_names = os.listdir(folder_path) file_paths = [os.path.join(folder_path, f) for f in file_names if f.endswith('.xlsx')] # 读取Excel文件为DataFrame,并合并 dfs = [] for file_path in file_paths: df = pd.read_excel(file_path) dfs.append(df) df_all = pd.concat(dfs) df_all = df_all[df_all['姓名'] == '张三'] # 只保留张三的工资信息 df_all = df_all[['日期', '金额']] # 只保留日期和金额两列 # 按照月份聚合,计算每个月的总工资 df_all['月份'] = df_all['日期'].dt.to_period('M') df_summary = df_all.groupby('月份').sum() # 将结果输出至Excel文件 excel_writer = pd.ExcelWriter('张三工资汇总.xlsx') df_summary.to_excel(excel_writer, sheet_name='汇总') excel_writer.save() ``` 以上代码示例仅供参考,读者可以根据实际情况进行修改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值